Dive into Deep Learning
https://gyazo.com/1ab817f5cb533cfc04f3a79df75acd58
Testing the potential of Deep learning presents unique challenges because any single application brings together various disciplines. Applying deep learning requires simultaneously understanding (i) the motivations for casting a problem in a particular way; (ii) the mathematical form of a given model; (iii) the optimization algorithms for fitting the models to data; (iv) the statistical principles that tell us when we should expect our models to generalize to unseen data and practical methods for certifying that they have, in fact, generalized; and (v) the engineering techniques required to train models efficiently, navigating the pitfalls of numerical computing and getting the most out of available hardware. Teaching both the critical thinking skills required to formulate problems, the mathematics to solve them, and the software tools to implement those solutions all in one place presents formidable challenges. Our goal in this book is to present a unified resource to bring would-be practitioners up to speed. When we started this book project, there were no resources that simultaneously (i) remained up to date; (ii) covered the breadth of modern machine learning practices with sufficient technical depth; and (iii) interleaved exposition of the quality one expects of a textbook with the clean runnable code that one expects of a hands-on tutorial. We found plenty of code examples for how to use a given deep learning framework (e.g., how to do basic numerical computing with matrices in TensorFlow) or for implementing particular techniques (e.g., code snippets for LeNet, AlexNet, ResNet, etc.) scattered across various blog posts and GitHub repositories. However, these examples typically focused on how to implement a given approach, but left out the discussion of why certain algorithmic decisions are made. While some interactive resources have popped up sporadically to address a particular topic, e.g., the engaging blog posts published on the website Distill, or personal blogs, they only covered selected topics in deep learning, and often lacked associated code. On the other hand, while several deep learning textbooks have emerged—e.g., (Goodfellow et al., 2016), which offers a comprehensive survey on the basics of deep learning—these resources do not marry the descriptions to realizations of the concepts in code, sometimes leaving readers clueless as to how to implement them. Moreover, too many resources are hidden behind the paywalls of commercial course providers.
We set out to create a resource that could (i) be freely available for everyone; (ii) offer sufficient technical depth to provide a starting point on the path to actually becoming an applied machine learning scientist; (iii) include runnable code, showing readers how to solve problems in practice; (iv) allow for rapid updates, both by us and also by the community at large; and (v) be complemented by a forum for interactive discussion of technical details and to answer questions.
These goals were often in conflict. Equations, theorems, and citations are best managed and laid out in LaTeX. Code is best described in Python. And webpages are native in HTML and JavaScript. Furthermore, we want the content to be accessible both as executable code, as a physical book, as a downloadable PDF, and on the Internet as a website. No workflows seemed suited to these demands, so we decided to assemble our own (Section 20.6). We settled on GitHub to share the source and to facilitate community contributions; Jupyter notebooks for mixing code, equations and text; Sphinx as a rendering engine; and Discourse as a discussion platform. While our system is not perfect, these choices strike a compromise among the competing concerns. We believe that Dive into Deep Learning might be the first book published using such an integrated workflow.
DeepL.icon
ディープラーニングの可能性を検証することは、一つのアプリケーションに様々な分野が集約されるため、ユニークな課題を提起する。深層学習の応用には、
(i)問題を特定の方法で扱う動機、
(ii)与えられたモデルの数学的形式、
(iii)モデルをデータに適合させる最適化アルゴリズム、
(iv)モデルが未知のデータに一般化するタイミングと実際に一般化したと証明するための実践方法を示す統計原理、
(v)数値計算の落とし穴をうまく使ってモデルを効率的に訓練し利用できるハードウェアを最大限に活用するための工学技術などを同時に理解することが必要である。
問題設定に必要なクリティカルシンキングスキル、問題解決のための数学、そして問題解決のためのソフトウェアツールのすべてを一度に教えることは、大変な困難を伴います。
本書の目的は、これから実務に携わろうとする人たちがスピードアップできるような統一されたリソースを提供することです。
この本のプロジェクトを開始したとき、
(i)最新であること、
(ii)最新の機械学習の幅広い実践を十分な技術的深さでカバーしていること、
(iii)教科書に期待される品質の説明とハンズオンチュートリアルに期待されるクリーンな実行可能コードが同時に挿入されている
資料が存在しなかったのである。
私たちは、与えられた深層学習フレームワークの使い方(例えば、TensorFlowで行列を使った基本的な数値計算を行う方法)や特定の技術を実装するためのコード例(例えば、LeNet、AlexNet、ResNetなどのコードスニペット)を、様々なブログ記事やGitHubリポジトリに散らばってたくさん見つけることができました。
しかし,これらの例は通常,特定のアプローチをどのように実装するかに重点を置いており,特定のアルゴリズム的な決定がなぜなされるのかについての議論は省かれています.
特定のトピックを扱うインタラクティブなリソースも散見されますが,例えばウェブサイトDistillで公開されている魅力的なブログ記事や個人のブログは,深層学習の特定のトピックを取り上げているだけで,関連するコードがないことがよくあります.
一方、深層学習の教科書もいくつか登場しているが、例えば、深層学習の基礎について包括的な調査を提供している(Goodfellow et al.、2016)。さらに、多くのリソースが商業的なコースプロバイダーの有料ウォールの後ろに隠されています。
私たちは、
(i)誰でも自由に利用でき、
(ii)実際に応用機械学習科学者になるための出発点として十分な技術的深さを提供し、
(iii)読者に実際の問題解決方法を示す実行可能コードを含み、
(iv)私たちとコミュニティ全体が迅速に更新でき、
(v) 技術的詳細について対話的に議論したり質問に答えるためのフォーラムによって補完できる
リソース作りを目指しています。
これらの目標はしばしば相反するものでした。
方程式、定理、引用文はLaTeXで管理し、レイアウトするのが最適です。
コードはPythonで記述するのが最適です。
そして、ウェブページはHTMLとJavaScriptで記述するのが最適です。
さらに、コンテンツは実行可能なコードとして、物理的な書籍として、ダウンロード可能なPDFとして、そしてインターネット上のWebサイトとしてアクセスできるようにしたい。
これらの要求に適したワークフローはなさそうなので、私たちは自分たちで組み立てることにしました(第20.6節)。
私たちは、
ソースを共有し、コミュニティの貢献を促進するためにGitHubを、
コード、方程式、テキストを混在させるためにJupyterノートブックを
レンダリングエンジンとしてSphinxを
そしてディスカッションプラットフォームとしてDiscourseを採用することにしました。
私たちのシステムは完璧ではありませんが、これらの選択は、競合する懸念事項の間で妥協点を見出すものです。Dive into Deep Learning」は、このような統合されたワークフローを用いて出版された最初の書籍になるかもしれないと考えています。